package com.smartcampusbackend.model;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.time.LocalDateTime;
import java.time.LocalDate;

@Data
@TableName("user")
public class User {
    @TableId
    private Integer id;
    
    // 基础信息（学生学号/教师工号 - 不可修改）
    private String username;
    private String password;
    private String realName;
    private String gender;
    private String email;
    private String phone;
    private String avatar;
    private LocalDateTime lastLogin; // 最后登录时间
    
    // 身份信息（不可修改）
    private String role; // STUDENT, TEACHER, ADMIN, STAFF
    
    // 学生特有信息
    private String studentId; // 学号（学生专用）
    
    // 院系和专业ID（数据库字段）
    private Long departmentId; // 院系ID
    private Long majorId; // 专业ID
    
    // 兼容旧代码的临时字段（非数据库字段）
    @TableField(exist = false)
    private String department; // 院系名称
    @TableField(exist = false)
    private String major; // 专业名称
    
    private String grade; // 年级
    private String className; // 班级
    private LocalDate enrollmentDate; // 入学时间
    
    // 教师特有信息
    private String teacherId; // 工号（教师专用）
    private String title; // 职称
    private String subject; // 任教科目
    
    // 通用信息
    private String idNumber; // 身份证号
    private String address; // 地址
    private String emergencyContact; // 紧急联系人
    private String emergencyPhone; // 紧急联系电话
    
    // 系统信息
    private Integer status; // 状态：1-正常，0-禁用
    private LocalDateTime createTime;
    private LocalDateTime updateTime;
    private String remark; // 备注
} 